package com.huike.report.service;

import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.TbClue;
import com.huike.contract.domain.TbContract;
import com.huike.report.domain.vo.ActivityStatisticsVo;
import com.huike.report.domain.vo.LineChartVo;
import com.huike.report.domain.vo.PieChartVo;

import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * @Author: Copyright by jiyuzm & wwq
 * @Date: 2023/07/13/17:09
 * @Description: 报表-统计分析
 */
public interface ReportService {


    /**
     * 渠道统计活动明细列表
     * @param activity 传入活动参数
     * @return TableDataInfo«List«渠道统计活动明细数据对象»»
     */
    List<ActivityStatisticsVo> activityStatisticsList(TbActivity activity);


    /**
     * 渠道统计-活动统计
     * @param beginCreateTime/
     * @param endCreateTime/
     * @return /
     */
    List<Map<String, Object>> activityStatistics(String beginCreateTime, String endCreateTime);


    /**
     * 渠道统计
     * @param beginCreateTime/
     * @param endCreateTime/
     * @return /
     */
    List<Map<String, Object>> chanelStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计归属渠道明细列表
     * @param beginCreateTime/
     * @param endCreateTime/
     * @return /
     */
    List<Map<String, Object>> channelStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * 线索统计新增线索数量报表
     * @param beginCreateTime/
     * @param endCreateTime/
     * @return /
     */
    LineChartVo cluesStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 线索统计明细列表
     * @param clue/
     * @return /
     */
    List<TbClue> cluesStatisticsList(TbClue clue);
    /**
     * 客户统计新增客户数报表
     *
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVo contractStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 客户统计明细列表
     *
     * @param contract
     * @return
     */
    List<TbContract> contractReportList(TbContract contract);

    /**
     * 销售统计归属部门明细列表
     *
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> deptStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * 线索统计线索转换率报表
     *
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    Object getVulnerabilityMap(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计归属人报表
     *
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> ownerShipStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计报表
     *
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVo salesStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 客户统计学科分布统计报表
     *
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<PieChartVo> subjectStatistics(String beginCreateTime, String endCreateTime);


}
